package com.service.impl;

import com.bean.Page;
import com.bean.Viedo;
import com.dao.ViedoDao;
import com.dao.impl.ViedoImpl;
import com.service.ViedoService;

import java.util.List;

public class ViedoServiceImpl implements ViedoService {
    ViedoDao viedoDao = new ViedoImpl();

    /**
     * 根据视频名字查找
     *
     * @param vname
     * @return
     */
    @Override
    public List<Viedo> existsViedoname(String vname) {
        return viedoDao.queryViedovname(vname);
    }

    //根据ID删除视频
    @Override
    public int deleteVideoById(Integer id) {
        return viedoDao.deleteViedoid(id);
    }

    //添加视频
    @Override
    public int addViedos(Viedo viedo) {
        return viedoDao.addViedo(viedo);
    }

    //查询修改视频信息
    @Override
    public int updateViedos(Viedo viedo) {
        return viedoDao.updataViedo(viedo);
    }

    //查询视频信息集合
    @Override
    public List<Viedo> queryViedos() {
        return viedoDao.queryViedoAll();
    }

    //查询视频的页数数据
    @Override
    public Page<Viedo> page(String vname, int pageNo, int pageSize) {
        Page<Viedo> page = new Page<Viedo>();
        // 设置每页显示的数量
        page.setPageSize(pageSize);
        // 求总记录数
//        Integer pageTotalCount = viedoDao.queryForPageTotalCount();
        Integer pageTotalCount = viedoDao.queryViedovname(vname).size();
        // 设置总记录数
        page.setPageTotalCount(pageTotalCount);
        // 求总页码
        Integer pageTotal = pageTotalCount / pageSize;
        if (pageTotalCount % pageSize > 0) {
            pageTotal += 1;
        }
        // 设置总页码
        page.setPageTotal(pageTotal);
        // 设置当前页码
        page.setPageNo(pageNo);
        // 求当前页数据的开始索引
        int begin = (page.getPageNo() - 1) * pageSize;
        // 求当前页数据
        List<Viedo> items = viedoDao.queryForPageItems(vname, begin, pageSize);
        // 设置当前页数据
        page.setItems(items);
        return page;
    }

    //视频类型查询
    @Override
    public Page<Viedo> pageType(String vtype, int pageNo, int pageSize) {
        Page<Viedo> page = new Page<Viedo>();
        // 设置每页显示的数量
        page.setPageSize(pageSize);
        // 求总记录数
//        Integer pageTotalCount = viedoDao.queryForPageTotalCount();
        Integer pageTotalCount = viedoDao.queryViedoTYPE(vtype).size();
        // 设置总记录数
        page.setPageTotalCount(pageTotalCount);
        // 求总页码
        Integer pageTotal = pageTotalCount / pageSize;
        if (pageTotalCount % pageSize > 0) {
            pageTotal += 1;
        }
        // 设置总页码
        page.setPageTotal(pageTotal);
        // 设置当前页码
        page.setPageNo(pageNo);
        // 求当前页数据的开始索引
        int begin = (page.getPageNo() - 1) * pageSize;
        // 求当前页数据
        List<Viedo> items = viedoDao.queryForPageItems(vtype, begin, pageSize);
        // 设置当前页数据
        page.setItems(items);
        return page;
    }

    //查询页面总数
    @Override
    public Integer queryForPageTotalCount() {
        return null;
    }

    //    分页
    @Override
    public Page<Viedo> page(int pageNo, int pageSize) {
        Page<Viedo> page = new Page<Viedo>();
        // 设置每页显示的数量
        page.setPageSize(pageSize);
        // 求总记录数
        Integer pageTotalCount = viedoDao.queryForPageTotalCount();
        // 设置总记录数
        page.setPageTotalCount(pageTotalCount);
        // 求总页码
        Integer pageTotal = pageTotalCount / pageSize;
        if (pageTotalCount % pageSize > 0) {
            pageTotal += 1;
        }
        // 设置总页码
        page.setPageTotal(pageTotal);
        // 设置当前页码
        page.setPageNo(pageNo);
        // 求当前页数据的开始索引
        int begin = (page.getPageNo() - 1) * pageSize;
        // 求当前页数据
//        List<Viedo> items = viedoDao.queryForPageItems("",begin,pageSize);
        List<Viedo> items = viedoDao.queryForPageItems("", begin, pageSize);
        // 设置当前页数据
        page.setItems(items);
        return page;
    }

    /**
     * 根据视频id查找 显示在single.jsp的窗格上
     *
     * @param id
     * @return
     */
    @Override
    public Viedo findVideoById(Integer id) {
        return viedoDao.findVideoById(id);
    }

    //    保存video
    @Override
    public int frontSave(Viedo viedo) {

        return viedoDao.frontSave(viedo);
    }

    //根据用户id查询收藏的视频
    @Override
    public List<Viedo> findFavoriteVideoByUsersId(Integer userId) {
        return viedoDao.findFavoriteVideoByUsersId(userId);
    }

    //根据用户id查询历史浏览的视频
    @Override
    public List<Viedo> findHistoryVideoByUsersId(Integer userId) {
        return viedoDao.findHistoryVideoByUsersId(userId);
    }

    //根据用户id查询点赞视频
    @Override
    public List<Viedo> findLikeVideoByUserId(Integer userId) {
        return viedoDao.findLikeVideoByUserId(userId);
    }

//    @Override
//    public Integer queryForPageTotalCount() {
//        return viedoDao.queryForPageTotalCount();
//    }
}
